This invention relates to a pixel based display system in which different colors to be displayed are stored in the random access look-up table memory and, more particularly, to a pixel based display system in which the number of colors which can be displayed by the system is increased without increasing the size of the random access memory storing the colors.
In pixel based display systems, the screen is divided into tiny areas called pixels which are individually colored to make a composite multi-colored image. State-of-the-art pixel based display systems employ a look-up table or random access memory, called the palette RAM, to store different colors to be displayed in different pixels of an image. To generate a color image, pixel words, each corresponding to a pixel of an image to be displayed and representing an address of the palette RAM, are fed in sequence to the palette RAM to read out the colors from the RAM locations. The colors may be stored as color intensity values, which represent red, green, and blue intensities. Alternatively, the colors may be stored as values representing hue, saturation, and brightness or in the YIQ color representation system. When a color is read out from a RAM location, the values representing the color are fed to analog-to-digital converters which convert the intensity values to analog signals. The resulting analog signals are applied to a display device to generate the color image.
Personal computers typically employ palette RAMS having sixteen storage locations selectable by four-bit pixel words or having 256 storage locations selectable by eight-bit pixel words. Since the colors are controlled by the values stored in the locations of the palette RAM, the colors in a given image can be varied simply by storing new color values in the storage locations. For this purpose, an I/O channel is provided to load new colors into the palette RAM. The number of colors which can be displayed in a based image is limited by the number of different storage locations in the palette RAM and it is often desirable to be able to display more colors than is permitted by the number of storage locations in the palette RAM. For example, complex photographs may require as many as 50,000 different colors. The conventional solution to the problem of providing more colors is to provide a larger palette RAM with a greater number of storage locations. Software can be used to increase the number of apparent colors by dithering, in which in-between shades of color are created by making patterns of the colors which are available. For example, if dark blue and white were available, a light blue area can be simulated with blue dots on a field of white. In this manner, an illusion of light blue is achieved. This method of showing additional colors is effective for large areas, but the quality of such a system does not equal having the color light blue itself stored in the palette RAM. Moreover, dithering cannot show small details and it cannot represent different shades of light blue satisfactorily.
The present invention increases the number of colors available that can be used in a given image by taking advantage of the fact that colors used at one place in the screen are frequently not needed at another place in the screen. For example, different colors may be used at the top of the screen than at the bottom. If there is a blue sky being displayed at the top of the screen and green grass is displayed at the bottom of the screen, different shades of blue may be needed at the top of the screen and different shades of green needed at the bottom of the screen. It would be advantageous, therefore, to reload the palette RAM with blue colors whenever the top of the screen display is being generated and replace these blue colors with green at the bottom of the screen.
The color stored in the palette RAM can be changed at any time by loading new colors through an I/O channel. If the system software could keep track of where on the screen a video display is currently being generated and could reload the palette quickly and not interfere with the image while the palette RAM was being loaded, it could change the stored colors in the middle of an image and thus make possible the display of many more colors on the screen with the same size palette RAM. Such a system, however, is not practical because the video display scans very rapidly across the display screen and it is very difficult for the software to know where on the screen the display is currently being generated. Moreover, the I/O channel operates relatively slowly. It normally takes a time interval corresponding to 25 to 100 pixels for the system to load one new color in the palette RAM via the I/O channel. Moreover, to keep even an approximate track of the position of the display on the screen requires an extensive software effort and if the software is keeping track of the display on the screen, then the software has little time to do anything else, such as serving the keyboard, responding to interrupts, etc. In addition to these problems, when the processor loads a new color in the RAM in the middle of an image, it causes indeterminate colors to be generated during the loading resulting in the image distortion commonly described as snow. Such distortion occurs because the palette ram cannot be read out by pixel words being received at the video port while the new colors are being loaded into the pixel RAM via the I/O channel. Such snow can be avoided to some extent by limiting the storage of new colors in the palette RAM during the intervals of vertical and horizontal retraces in the video display system, but this would require the software to keep precise track of where in the raster scan the display is currently being generated.